// ============================== 导入依赖 ============================== //

import CORE from '@/CORE'

// ============================== 导出表单公共 ============================== //

// 可监听 @change="(value) => value" 来获取最新的绑定值

export default {
  // —————————————————————————————— 弹性 —————————————————————————————— //

  ...CORE.WEB.BASE.FLEX,

  // —————————————————————————————— 宽度 —————————————————————————————— //

  ...CORE.WEB.BASE.WIDTH,

  // —————————————————————————————— 尺寸 —————————————————————————————— //

  ...CORE.WEB.BASE.SIZE,

  // —————————————————————————————— 标签 —————————————————————————————— //

  ...CORE.WEB.BASE.WORD,

  label: { type: String, default: '' }, // 标签 (为空不显示，但宽度还在)
  noLabel: { type: Boolean, default: false }, // 隐藏标签 (宽度为 0)

  labelWidth: { type: [Number, String], default: null }, // 标签宽度，为 null 则由 WebForm 决定

  // —————————————————————————————— 数据 —————————————————————————————— //

  bind: { type: String, required: true }, // 绑定键名，触发 @change 事件
  init: { default: undefined }, // 默认值

  // 为空则取外层 WebForm / WebShow 的属性 one
  // 再为空则取 path 模块的 state.one
  one: { type: Object, default: null }, // 单项

  // —————————————————————————————— 校验 —————————————————————————————— //

  required: { type: Boolean, default: false }, // 是否必须
  check: { type: Function, default: null }, // 校验方法 ( const msg = check(value, obj, bind)，msg 有值为不通过 )

  // —————————————————————————————— 其他 —————————————————————————————— //

  tip: { type: String, default: null }, // placeholder 提示 (为 null 则取 tipPre + label)
  tipPre: { type: String, default: '请选择' }, // 提示前缀
  noTip: { type: Boolean, default: false }, // 有无提示

  noClear: { type: Boolean, default: false }, // 有无清除
  onlyAdd: { type: Boolean, default: false }, // 是否只能在新增时可编辑

  disabled: { type: Boolean, default: false }, // 是否禁用
  noDisable: { type: Boolean, default: false }, // 是否不被禁用 (永远可用)
  onlyShow: { type: Boolean, default: false }, // 是否仅作展示，不纠正绑定对象

  noMargin: { type: Boolean, default: false }, // 是否去掉底部外间距

  // —————————————————————————————— 原生属性 —————————————————————————————— //

  elProps: { type: Object, default: () => ({}) }, // el-*** 原生配置项
}
